package com.muatocroi.tornado;

public enum VirtualKeyCode {
	// / <summary>
	// / Left mouse button
	// / </summary>
	LBUTTON((byte) 0x01),

	// / <summary>
	// / Right mouse button
	// / </summary>
	RBUTTON((byte) 0x02),

	// / <summary>
	// / Control-break processing
	// / </summary>
	CANCEL((byte) 0x03),

	// / <summary>
	// / Middle mouse button (three-button mouse) - NOT contiguous with LBUTTON
	// and RBUTTON
	// / </summary>
	MBUTTON((byte) 0x04),

	// / <summary>
	// / Windows 2000/XP: X1 mouse button - NOT contiguous with LBUTTON and
	// RBUTTON
	// / </summary>
	XBUTTON1((byte) 0x05),

	// / <summary>
	// / Windows 2000/XP: X2 mouse button - NOT contiguous with LBUTTON and
	// RBUTTON
	// / </summary>
	XBUTTON2((byte) 0x06),

	// 0x07 : Undefined

	// / <summary>
	// / BACKSPACE key
	// / </summary>
	BACK((byte) 0x08),

	// / <summary>
	// / TAB key
	// / </summary>
	TAB((byte) 0x09),

	// 0x0A - 0x0B : Reserved

	// / <summary>
	// / CLEAR key
	// / </summary>
	CLEAR((byte) 0x0C),

	// / <summary>
	// / ENTER key
	// / </summary>
	RETURN((byte) 0x0D),

	// 0x0E - 0x0F : Undefined

	// / <summary>
	// / SHIFT key
	// / </summary>
	SHIFT((byte) 0x10),

	// / <summary>
	// / CTRL key
	// / </summary>
	CONTROL((byte) 0x11),

	// / <summary>
	// / ALT key
	// / </summary>
	MENU((byte) 0x12),

	// / <summary>
	// / PAUSE key
	// / </summary>
	PAUSE((byte) 0x13),

	// / <summary>
	// / CAPS LOCK key
	// / </summary>
	CAPITAL((byte) 0x14),

	// / <summary>
	// / Input Method Editor (IME) Kana mode
	// / </summary>
	KANA((byte) 0x15),

	// / <summary>
	// / IME Hanguel mode (maintained for compatibility; use HANGUL)
	// / </summary>
	HANGEUL((byte) 0x15),

	// / <summary>
	// / IME Hangul mode
	// / </summary>
	HANGUL((byte) 0x15),

	// 0x16 : Undefined

	// / <summary>
	// / IME Junja mode
	// / </summary>
	JUNJA((byte) 0x17),

	// / <summary>
	// / IME final mode
	// / </summary>
	FINAL((byte) 0x18),

	// / <summary>
	// / IME Hanja mode
	// / </summary>
	HANJA((byte) 0x19),

	// / <summary>
	// / IME Kanji mode
	// / </summary>
	KANJI((byte) 0x19),

	// 0x1A : Undefined

	// / <summary>
	// / ESC key
	// / </summary>
	ESCAPE((byte) 0x1B),

	// / <summary>
	// / IME convert
	// / </summary>
	CONVERT((byte) 0x1C),

	// / <summary>
	// / IME nonconvert
	// / </summary>
	NONCONVERT((byte) 0x1D),

	// / <summary>
	// / IME accept
	// / </summary>
	ACCEPT((byte) 0x1E),

	// / <summary>
	// / IME mode change request
	// / </summary>
	MODECHANGE((byte) 0x1F),

	// / <summary>
	// / SPACEBAR
	// / </summary>
	SPACE((byte) 0x20),

	// / <summary>
	// / PAGE UP key
	// / </summary>
	PRIOR((byte) 0x21),

	// / <summary>
	// / PAGE DOWN key
	// / </summary>
	NEXT((byte) 0x22),

	// / <summary>
	// / END key
	// / </summary>
	END((byte) 0x23),

	// / <summary>
	// / HOME key
	// / </summary>
	HOME((byte) 0x24),

	// / <summary>
	// / LEFT ARROW key
	// / </summary>
	LEFT((byte) 0x25),

	// / <summary>
	// / UP ARROW key
	// / </summary>
	UP((byte) 0x26),

	// / <summary>
	// / RIGHT ARROW key
	// / </summary>
	RIGHT((byte) 0x27),

	// / <summary>
	// / DOWN ARROW key
	// / </summary>
	DOWN((byte) 0x28),

	// / <summary>
	// / SELECT key
	// / </summary>
	SELECT((byte) 0x29),

	// / <summary>
	// / PRINT key
	// / </summary>
	PRINT((byte) 0x2A),

	// / <summary>
	// / EXECUTE key
	// / </summary>
	EXECUTE((byte) 0x2B),

	// / <summary>
	// / PRINT SCREEN key
	// / </summary>
	SNAPSHOT((byte) 0x2C),

	// / <summary>
	// / INS key
	// / </summary>
	INSERT((byte) 0x2D),

	// / <summary>
	// / DEL key
	// / </summary>
	DELETE((byte) 0x2E),

	// / <summary>
	// / HELP key
	// / </summary>
	HELP((byte) 0x2F),

	// / <summary>
	// / 0 key
	// / </summary>
	VK_0((byte) 0x30),

	// / <summary>
	// / 1 key
	// / </summary>
	VK_1((byte) 0x31),

	// / <summary>
	// / 2 key
	// / </summary>
	VK_2((byte) 0x32),

	// / <summary>
	// / 3 key
	// / </summary>
	VK_3((byte) 0x33),

	// / <summary>
	// / 4 key
	// / </summary>
	VK_4((byte) 0x34),

	// / <summary>
	// / 5 key
	// / </summary>
	VK_5((byte) 0x35),

	// / <summary>
	// / 6 key
	// / </summary>
	VK_6((byte) 0x36),

	// / <summary>
	// / 7 key
	// / </summary>
	VK_7((byte) 0x37),

	// / <summary>
	// / 8 key
	// / </summary>
	VK_8((byte) 0x38),

	// / <summary>
	// / 9 key
	// / </summary>
	VK_9((byte) 0x39),

	//
	// 0x3A - 0x40 : Udefined
	//

	// / <summary>
	// / A key
	// / </summary>
	VK_A((byte) 0x41),

	// / <summary>
	// / B key
	// / </summary>
	VK_B((byte) 0x42),

	// / <summary>
	// / C key
	// / </summary>
	VK_C((byte) 0x43),

	// / <summary>
	// / D key
	// / </summary>
	VK_D((byte) 0x44),

	// / <summary>
	// / E key
	// / </summary>
	VK_E((byte) 0x45),

	// / <summary>
	// / F key
	// / </summary>
	VK_F((byte) 0x46),

	// / <summary>
	// / G key
	// / </summary>
	VK_G((byte) 0x47),

	// / <summary>
	// / H key
	// / </summary>
	VK_H((byte) 0x48),

	// / <summary>
	// / I key
	// / </summary>
	VK_I((byte) 0x49),

	// / <summary>
	// / J key
	// / </summary>
	VK_J((byte) 0x4A),

	// / <summary>
	// / K key
	// / </summary>
	VK_K((byte) 0x4B),

	// / <summary>
	// / L key
	// / </summary>
	VK_L((byte) 0x4C),

	// / <summary>
	// / M key
	// / </summary>
	VK_M((byte) 0x4D),

	// / <summary>
	// / N key
	// / </summary>
	VK_N((byte) 0x4E),

	// / <summary>
	// / O key
	// / </summary>
	VK_O((byte) 0x4F),

	// / <summary>
	// / P key
	// / </summary>
	VK_P((byte) 0x50),

	// / <summary>
	// / Q key
	// / </summary>
	VK_Q((byte) 0x51),

	// / <summary>
	// / R key
	// / </summary>
	VK_R((byte) 0x52),

	// / <summary>
	// / S key
	// / </summary>
	VK_S((byte) 0x53),

	// / <summary>
	// / T key
	// / </summary>
	VK_T((byte) 0x54),

	// / <summary>
	// / U key
	// / </summary>
	VK_U((byte) 0x55),

	// / <summary>
	// / V key
	// / </summary>
	VK_V((byte) 0x56),

	// / <summary>
	// / W key
	// / </summary>
	VK_W((byte) 0x57),

	// / <summary>
	// / X key
	// / </summary>
	VK_X((byte) 0x58),

	// / <summary>
	// / Y key
	// / </summary>
	VK_Y((byte) 0x59),

	// / <summary>
	// / Z key
	// / </summary>
	VK_Z((byte) 0x5A),

	// / <summary>
	// / Left Windows key (Microsoft Natural keyboard)
	// / </summary>
	LWIN((byte) 0x5B),

	// / <summary>
	// / Right Windows key (Natural keyboard)
	// / </summary>
	RWIN((byte) 0x5C),

	// / <summary>
	// / Applications key (Natural keyboard)
	// / </summary>
	APPS((byte) 0x5D),

	// 0x5E : reserved

	// / <summary>
	// / Computer Sleep key
	// / </summary>
	SLEEP((byte) 0x5F),

	// / <summary>
	// / Numeric keypad 0 key
	// / </summary>
	NUMPAD0((byte) 0x60),

	// / <summary>
	// / Numeric keypad 1 key
	// / </summary>
	NUMPAD1((byte) 0x61),

	// / <summary>
	// / Numeric keypad 2 key
	// / </summary>
	NUMPAD2((byte) 0x62),

	// / <summary>
	// / Numeric keypad 3 key
	// / </summary>
	NUMPAD3((byte) 0x63),

	// / <summary>
	// / Numeric keypad 4 key
	// / </summary>
	NUMPAD4((byte) 0x64),

	// / <summary>
	// / Numeric keypad 5 key
	// / </summary>
	NUMPAD5((byte) 0x65),

	// / <summary>
	// / Numeric keypad 6 key
	// / </summary>
	NUMPAD6((byte) 0x66),

	// / <summary>
	// / Numeric keypad 7 key
	// / </summary>
	NUMPAD7((byte) 0x67),

	// / <summary>
	// / Numeric keypad 8 key
	// / </summary>
	NUMPAD8((byte) 0x68),

	// / <summary>
	// / Numeric keypad 9 key
	// / </summary>
	NUMPAD9((byte) 0x69),

	// / <summary>
	// / Multiply key
	// / </summary>
	MULTIPLY((byte) 0x6A),

	// / <summary>
	// / Add key
	// / </summary>
	ADD((byte) 0x6B),

	// / <summary>
	// / Separator key
	// / </summary>
	SEPARATOR((byte) 0x6C),

	// / <summary>
	// / Subtract key
	// / </summary>
	SUBTRACT((byte) 0x6D),

	// / <summary>
	// / Decimal key
	// / </summary>
	DECIMAL((byte) 0x6E),

	// / <summary>
	// / Divide key
	// / </summary>
	DIVIDE((byte) 0x6F),

	// / <summary>
	// / F1 key
	// / </summary>
	F1((byte) 0x70),

	// / <summary>
	// / F2 key
	// / </summary>
	F2((byte) 0x71),

	// / <summary>
	// / F3 key
	// / </summary>
	F3((byte) 0x72),

	// / <summary>
	// / F4 key
	// / </summary>
	F4((byte) 0x73),

	// / <summary>
	// / F5 key
	// / </summary>
	F5((byte) 0x74),

	// / <summary>
	// / F6 key
	// / </summary>
	F6((byte) 0x75),

	// / <summary>
	// / F7 key
	// / </summary>
	F7((byte) 0x76),

	// / <summary>
	// / F8 key
	// / </summary>
	F8((byte) 0x77),

	// / <summary>
	// / F9 key
	// / </summary>
	F9((byte) 0x78),

	// / <summary>
	// / F10 key
	// / </summary>
	F10((byte) 0x79),

	// / <summary>
	// / F11 key
	// / </summary>
	F11((byte) 0x7A),

	// / <summary>
	// / F12 key
	// / </summary>
	F12((byte) 0x7B),

	// / <summary>
	// / F13 key
	// / </summary>
	F13((byte) 0x7C),

	// / <summary>
	// / F14 key
	// / </summary>
	F14((byte) 0x7D),

	// / <summary>
	// / F15 key
	// / </summary>
	F15((byte) 0x7E),

	// / <summary>
	// / F16 key
	// / </summary>
	F16((byte) 0x7F),

	// / <summary>
	// / F17 key
	// / </summary>
	F17((byte) 0x80),

	// / <summary>
	// / F18 key
	// / </summary>
	F18((byte) 0x81),

	// / <summary>
	// / F19 key
	// / </summary>
	F19((byte) 0x82),

	// / <summary>
	// / F20 key
	// / </summary>
	F20((byte) 0x83),

	// / <summary>
	// / F21 key
	// / </summary>
	F21((byte) 0x84),

	// / <summary>
	// / F22 key
	// / </summary>
	F22((byte) 0x85),

	// / <summary>
	// / F23 key
	// / </summary>
	F23((byte) 0x86),

	// / <summary>
	// / F24 key
	// / </summary>
	F24((byte) 0x87),

	//
	// 0x88 - 0x8F : Unassigned
	//

	// / <summary>
	// / NUM LOCK key
	// / </summary>
	NUMLOCK((byte) 0x90),

	// / <summary>
	// / SCROLL LOCK key
	// / </summary>
	SCROLL((byte) 0x91),

	// 0x92 - 0x96 : OEM Specific

	// 0x97 - 0x9F : Unassigned

	//
	// L* & R* - left and right Alt), Ctrl and Shift virtual keys.
	// Used only as parameters to GetAsyncKeyState() and GetKeyState().
	// No other API or message will distinguish left and right keys in this way.
	//

	// / <summary>
	// / Left SHIFT key - Used only as parameters to GetAsyncKeyState() and
	// GetKeyState()
	// / </summary>
	LSHIFT((byte) 0xA0),

	// / <summary>
	// / Right SHIFT key - Used only as parameters to GetAsyncKeyState() and
	// GetKeyState()
	// / </summary>
	RSHIFT((byte) 0xA1),

	// / <summary>
	// / Left CONTROL key - Used only as parameters to GetAsyncKeyState() and
	// GetKeyState()
	// / </summary>
	LCONTROL((byte) 0xA2),

	// / <summary>
	// / Right CONTROL key - Used only as parameters to GetAsyncKeyState() and
	// GetKeyState()
	// / </summary>
	RCONTROL((byte) 0xA3),

	// / <summary>
	// / Left MENU key - Used only as parameters to GetAsyncKeyState() and
	// GetKeyState()
	// / </summary>
	LMENU((byte) 0xA4),

	// / <summary>
	// / Right MENU key - Used only as parameters to GetAsyncKeyState() and
	// GetKeyState()
	// / </summary>
	RMENU((byte) 0xA5),

	// / <summary>
	// / Windows 2000/XP: Browser Back key
	// / </summary>
	BROWSER_BACK((byte) 0xA6),

	// / <summary>
	// / Windows 2000/XP: Browser Forward key
	// / </summary>
	BROWSER_FORWARD((byte) 0xA7),

	// / <summary>
	// / Windows 2000/XP: Browser Refresh key
	// / </summary>
	BROWSER_REFRESH((byte) 0xA8),

	// / <summary>
	// / Windows 2000/XP: Browser Stop key
	// / </summary>
	BROWSER_STOP((byte) 0xA9),

	// / <summary>
	// / Windows 2000/XP: Browser Search key
	// / </summary>
	BROWSER_SEARCH((byte) 0xAA),

	// / <summary>
	// / Windows 2000/XP: Browser Favorites key
	// / </summary>
	BROWSER_FAVORITES((byte) 0xAB),

	// / <summary>
	// / Windows 2000/XP: Browser Start and Home key
	// / </summary>
	BROWSER_HOME((byte) 0xAC),

	// / <summary>
	// / Windows 2000/XP: Volume Mute key
	// / </summary>
	VOLUME_MUTE((byte) 0xAD),

	// / <summary>
	// / Windows 2000/XP: Volume Down key
	// / </summary>
	VOLUME_DOWN((byte) 0xAE),

	// / <summary>
	// / Windows 2000/XP: Volume Up key
	// / </summary>
	VOLUME_UP((byte) 0xAF),

	// / <summary>
	// / Windows 2000/XP: Next Track key
	// / </summary>
	MEDIA_NEXT_TRACK((byte) 0xB0),

	// / <summary>
	// / Windows 2000/XP: Previous Track key
	// / </summary>
	MEDIA_PREV_TRACK((byte) 0xB1),

	// / <summary>
	// / Windows 2000/XP: Stop Media key
	// / </summary>
	MEDIA_STOP((byte) 0xB2),

	// / <summary>
	// / Windows 2000/XP: Play/Pause Media key
	// / </summary>
	MEDIA_PLAY_PAUSE((byte) 0xB3),

	// / <summary>
	// / Windows 2000/XP: Start Mail key
	// / </summary>
	LAUNCH_MAIL((byte) 0xB4),

	// / <summary>
	// / Windows 2000/XP: Select Media key
	// / </summary>
	LAUNCH_MEDIA_SELECT((byte) 0xB5),

	// / <summary>
	// / Windows 2000/XP: Start Application 1 key
	// / </summary>
	LAUNCH_APP1((byte) 0xB6),

	// / <summary>
	// / Windows 2000/XP: Start Application 2 key
	// / </summary>
	LAUNCH_APP2((byte) 0xB7),

	//
	// 0xB8 - 0xB9 : Reserved
	//

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard. Windows
	// 2000/XP: For the US standard keyboard), the ';:' key
	// / </summary>
	OEM_1((byte) 0xBA),

	// / <summary>
	// / Windows 2000/XP: For any country/region), the '+' key
	// / </summary>
	OEM_PLUS((byte) 0xBB),

	// / <summary>
	// / Windows 2000/XP: For any country/region), the '),' key
	// / </summary>
	OEM_COMMA((byte) 0xBC),

	// / <summary>
	// / Windows 2000/XP: For any country/region), the '-' key
	// / </summary>
	OEM_MINUS((byte) 0xBD),

	// / <summary>
	// / Windows 2000/XP: For any country/region), the '.' key
	// / </summary>
	OEM_PERIOD((byte) 0xBE),

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard. Windows
	// 2000/XP: For the US standard keyboard), the '/?' key
	// / </summary>
	OEM_2((byte) 0xBF),

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard. Windows
	// 2000/XP: For the US standard keyboard), the '`~' key
	// / </summary>
	OEM_3((byte) 0xC0),

	//
	// 0xC1 - 0xD7 : Reserved
	//

	//
	// 0xD8 - 0xDA : Unassigned
	//

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard. Windows
	// 2000/XP: For the US standard keyboard), the '[{' key
	// / </summary>
	OEM_4((byte) 0xDB),

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard. Windows
	// 2000/XP: For the US standard keyboard), the '\|' key
	// / </summary>
	OEM_5((byte) 0xDC),

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard. Windows
	// 2000/XP: For the US standard keyboard), the ']}' key
	// / </summary>
	OEM_6((byte) 0xDD),

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard. Windows
	// 2000/XP: For the US standard keyboard), the 'single-quote/double-quote'
	// key
	// / </summary>
	OEM_7((byte) 0xDE),

	// / <summary>
	// / Used for miscellaneous characters; it can vary by keyboard.
	// / </summary>
	OEM_8((byte) 0xDF),

	//
	// 0xE0 : Reserved
	//

	//
	// 0xE1 : OEM Specific
	//

	// / <summary>
	// / Windows 2000/XP: Either the angle bracket key or the backslash key on
	// the RT 102-key keyboard
	// / </summary>
	OEM_102((byte) 0xE2),

	//
	// ((byte)0xE3-E4) : OEM specific
	//

	// / <summary>
	// / Windows 95/98/Me), Windows NT 4.0), Windows 2000/XP: IME PROCESS key
	// / </summary>
	PROCESSKEY((byte) 0xE5),

	//
	// 0xE6 : OEM specific
	//

	// / <summary>
	// / Windows 2000/XP: Used to pass Unicode characters as if they were
	// keystrokes. The PACKET key is the low word of a 32-bit Virtual Key value
	// used for non-keyboard input methods. For more information), see Remark in
	// KEYBDINPUT), SendInput), WM_KEYDOWN), and WM_KEYUP
	// / </summary>
	PACKET((byte) 0xE7),

	//
	// 0xE8 : Unassigned
	//

	//
	// 0xE9-F5 : OEM specific
	//

	// / <summary>
	// / Attn key
	// / </summary>
	ATTN((byte) 0xF6),

	// / <summary>
	// / CrSel key
	// / </summary>
	CRSEL((byte) 0xF7),

	// / <summary>
	// / ExSel key
	// / </summary>
	EXSEL((byte) 0xF8),

	// / <summary>
	// / Erase EOF key
	// / </summary>
	EREOF((byte) 0xF9),

	// / <summary>
	// / Play key
	// / </summary>
	PLAY((byte) 0xFA),

	// / <summary>
	// / Zoom key
	// / </summary>
	ZOOM((byte) 0xFB),

	// / <summary>
	// / Reserved
	// / </summary>
	NONAME((byte) 0xFC),

	// / <summary>
	// / PA1 key
	// / </summary>
	PA1((byte) 0xFD),

	// / <summary>
	// / Clear key
	// / </summary>
	OEM_CLEAR((byte) 0xFE);

	private final byte code;

	VirtualKeyCode(byte b) {
		this.code = b;
	}

	public byte Code() {
		return this.code;
	}
}
